/**
 * @author：小小游 - allen
 * @description：MongoDB公用文件，统一使用 NodeJS原生API操作数据库
 */
// 连接MongoDB客户端
const MongoClient = require('mongodb').MongoClient;

// 链接数据的url地址
let db_url = 'mongodb://localhost:27017/wf_shop_wechat_pay';

// 封装的工具类
let utils = require('../../utils/util');

/**
 * 封装通用的查询数据的方法
 */
const query = (data, table) => {
    return new Promise((resolve, reject) => {
        connect((dbase, db) => {
            dbase.collection(table).find(data).toArray((err, res) => {
                if (err) {
                    throw err;
                } else {
                    db.close();
                    resolve(utils.handleSucc(res));
                }
            });
        });
    });
};

/**
 * 封装通用的插入数据的方法
 */
const insert = (data, table) => { 
    return new Promise((resolve, reject) => {
        connect((dbase, db) => {
            dbase.collection(table).insertOne(data, (err, res) => {
                if (err) {
                    throw err;
                } else {
                    db.close();
                    resolve(utils.handleSucc(res));
                }
            });
        });
    });
};

// 数据库连接
function connect(callback) {
    // 执行数据库的连接操作
    MongoClient.connect(db_url, (err, db) => {
        if (err) throw err;
        let dbase = db.db('wf_shop_wechat_pay');
        // dbase - 执行数据库表的查询等操作     db - 关闭数据库的连接等操作
        callback(dbase, db);
    });
}

module.exports = {
    query,
    insert
};

